Program Reconditioning: Avoiding Undefined Behaviour When Finding and Reducing Compiler Bugs
نویسندگان
چکیده
We introduce program reconditioning, a method for allowing generation and differential testing to be used find miscompilation bugs, test-case reduction simplify bug-triggering programs, even when (a) the programming language of interest features undefined behaviour (UB) (b) no tools exist detect avoid this UB. present two based on our reconditioning idea: GLSLsmith OpenGL Shading Language (GLSL), widely-used graphics programming, WGSLsmith WebGPU (WGSL), new web-based rendering. GLSL many UBs, but unlike languages such as C C++ them automatically. While WGSL specification very limited UB, early implementations do exhibit reasons initial implementation simplicity, making it challenging test quickly eliminate unrelated bugs. Thanks we show that allow applied compilers first time, despite unavailability UB detection techniques these languages. Through large campaign, have found 24 33 bugs in compilers, respectively. experiments showing is disabled, compiler leads high rate programs appear trigger actually just feature also novel approach managing floating-point roundoff error using implemented both WGSL.
منابع مشابه
Finding and Avoiding Bugs in Enterprise Ontologies
We report on ten years of experience building enterprise ontologies for commercial clients. We describe key properties that an enterprise ontology should have, and illustrate them with many real world examples. They are: correctness, understandability, usability, and completeness. We give tips and guidelines for how best to use inference and explanations to identify and track down problems. We ...
متن کاملModeling Undefined Behaviour Semantics for Checking Equivalence Across Compiler Optimizations
Previous work on equivalence checking for synthesis and translation validation has usually verified programs across selected optimizations, disabling the ones that exploit undefined behaviour. On the other hand, modern compilers extensively exploit language level undefined behaviour for optimization. Previous work on equivalence checking for translation validation and synthesis yields poor resu...
متن کاملAvoiding the Undefined by Underspecification
The first volume of Springer-Verlag's Lecture Notes in Computer Science appeared in 1973, almost 22 years ago. The field has learned a lot about computing since then, and in doing so it has leaned on and supported advances in other fields. In this paper, we discuss an aspect of one of these fields that has been explored by computer scientists, handling undefined terms in formal logic. Logicians...
متن کاملWhen bugs meet cells
Early research into microbiological pathogenesis attempted to determine which microbial properties make micro-organisms pathogenic. Over time, however, a growing number of research projects began to focus on the intimate relationships between microbes and their hosts and, more precisely, on the consequences of infection for the cell biology of the host. This approach has brought together two tr...
متن کاملFinding Concurrency Bugs In Java
Because threads are a core feature of the Java language, the widespread adoption of Java has exposed a much wider audience to concurrency than previous languages have. Concurrent programs are notoriously difficult to write correctly, and many subtle bugs can result from incorrect use of threads and synchronization. Therefore, finding techniques to find concurrency bugs is an important problem. ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Proceedings of the ACM on programming languages
سال: 2023
ISSN: ['2475-1421']
DOI: https://doi.org/10.1145/3591294